package com.jiangjiang.eshop.commodity.controller;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.jiangjiang.eshop.commodity.dto.GoodsDTO;
import com.jiangjiang.eshop.commodity.dto.GoodsQueryPageDTO;
import com.jiangjiang.eshop.commodity.service.GoodsService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

/**
 * @ClassName GoodsController
 * @Description 商品管理
 * @Author jhw
 * @Date 2021/8/2 16:12
 * @Version 1.0
 **/
@Slf4j
@RequestMapping("/commodity/goods")
@RestController
public class GoodsController {

    @Autowired
    private GoodsService goodsService;

    /**
     * 商品数据分页查询
     *
     * @param dto 查询条件
     * @return 查询结果
     */
    @PostMapping("/queryForPage")
    public Page<GoodsDTO> queryForPage(@RequestBody GoodsQueryPageDTO dto) {
        try {
            return goodsService.queryForPage(dto);
        } catch (Exception e) {
            log.warn("error", e);
        }
        return null;
    }

    /**
     * 根据id商品数据
     *
     * @param id 商品id
     * @return 查询结果
     */
    @PostMapping("/queryById")
    public GoodsDTO queryById(@RequestParam("id") Long id) {
        try {
            return goodsService.queryById(id);
        } catch (Exception e) {
            log.warn("error", e);
        }
        return null;
    }

    /**
     * 保存商品数据
     *
     * @param dto 商品数据
     * @return 处理结果
     */
    @PostMapping("/save")
    public Boolean saveGoods(@RequestBody GoodsDTO dto) {
        try {
            return goodsService.saveGoods(dto);
        } catch (Exception e) {
            log.warn("error", e);
        }
        return false;
    }

    /**
     * 更新商品数据
     *
     * @param dto 商品数据
     * @return 处理结果
     */
    @PostMapping("/update")
    public Boolean updateGoods(@RequestBody GoodsDTO dto) {
        try {
            return goodsService.updateGoods(dto);
        } catch (Exception e) {
            log.warn("error", e);
        }
        return false;
    }

    /**
     * 商品审核
     *
     * @param goodsIs       商品id
     * @param approveResult 审核结果参数
     * @return 处理结果
     */
    @GetMapping("/approve")
    public Boolean approve(@RequestParam("goodsId") Long goodsId, @RequestParam("approveResult") Integer approveResult) {
        try {
            return goodsService.approve(goodsId, approveResult);
        } catch (Exception e) {
            log.warn("error", e);
        }
        return false;
    }

    /**
     * 执行商品上架操作
     *
     * @param goodsId 商品id
     * @return 处理结果
     */
    @GetMapping("/putOnShelves")
    public Boolean putOnShelves(@RequestParam("goodsId") Long goodsId) {
        try {
            return goodsService.putOnShelves(goodsId);
        } catch (Exception e) {
            log.warn("error", e);
        }
        return false;
    }

    /**
     * 执行商品下架操作
     *
     * @param goodsId 商品id
     * @return 处理结果
     */
    @GetMapping("/putOffShelves")
    public Boolean putOffShelves(@RequestParam("goodsId") Long goodsId) {
        try {
            return goodsService.putOffShelves(goodsId);
        } catch (Exception e) {
            log.warn("error", e);
        }
        return false;
    }


    /**
     * 执行删除操作
     *
     * @param goodsId 商品id
     * @return 操作结果
     */
    @GetMapping("/remove")
    public Boolean removeGoods(@RequestParam("goodsId") Long goodsId) {
        try {
            return goodsService.removeGoods(goodsId);
        } catch (Exception e) {
            log.warn("error", e);
        }
        return false;
    }
}
